package cn.e4j.modular.api.service;


import cn.e4j.core.dto.Dtos;
import cn.e4j.core.dto.impl.Dto;
import cn.e4j.core.util.InvokeUtil;
import cn.e4j.core.util.ToolUtil;
import cn.e4j.modular.api.mapper.BfcglMapper;
import cn.e4j.modular.api.mapper.XsfxMapper;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectRestriction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

@Service
public class XsfxService {


    @Autowired
    XsfxMapper xsfxMapper;


    @Transactional(readOnly = true)
    public List<Dto> getInfo(Dto indto){

        List<Dto> fact = InvokeUtil.invokeBeanMethod2("cn.e4j.modular.api.mapper.XsfxMapper.getFact",indto);
//        List<Dto> target = InvokeUtil.invokeBeanMethod2("cn.e4j.modular.api.mapper.XsfxMapper.getTarget",indto);

//        BigDecimal decimal = new BigDecimal(100);
//        for (Dto t:target){
//            String gwbs010 = t.getString("GWBS010");
//            BigDecimal targetAmount = t.getBigDecimal("AMOUNT");
//            t.put("percent",0);
//            t.put("factAmount",0);
//            for (Dto d:fact){
//                if (d.getString("GWCS014").equals(gwbs010)){
//                    BigDecimal factAmount = d.getBigDecimal("AMOUNT");
//                    BigDecimal percent = factAmount.divide(targetAmount, 2, BigDecimal.ROUND_HALF_UP).multiply(decimal);
//                    t.put("percent",percent.doubleValue());
//                    t.put("factAmount",factAmount.doubleValue());
//                }
//            }
//        }

//        target = new ArrayList<>();
//        Dto dto = new Dto();
//        dto.put("AMOUNT","10000.00000");
//        dto.put("factAmount","80000.00000");
//        dto.put("percent","80.0");
//        dto.put("GWBS010NAME","蔡剑英");
//        dto.put("GWBS016NAME","上海市");
//        dto.put("GWBS017NAME","鲜奶");
//        dto.put("GWBS015NAME","线下销售");
//        target.add(dto);
//
//        dto = new Dto();
//        dto.put("AMOUNT","10000.00000");
//        dto.put("factAmount","6000.00000");
//        dto.put("percent","60.0");
//        dto.put("GWBS010NAME","蔡剑英2");
//        dto.put("GWBS016NAME","上海市");
//        dto.put("GWBS017NAME","鲜奶");
//        dto.put("GWBS015NAME","线下销售");
//        target.add(dto);
//
//        dto = new Dto();
//        dto.put("AMOUNT","10000.00000");
//        dto.put("factAmount","4000.00000");
//        dto.put("percent","40.0");
//        dto.put("GWBS010NAME","蔡剑英3");
//        dto.put("GWBS016NAME","上海市");
//        dto.put("GWBS017NAME","鲜奶");
//        dto.put("GWBS015NAME","线下销售");
//        target.add(dto);

//        BigDecimal zero = new BigDecimal(0);
//        for (Dto t:target){
//            zero = zero.add(t.getBigDecimal("percent"));
//        }
//
//        for (Dto t:target){
//            t.put("percent1",t.getBigDecimal("percent").divide(zero,3,BigDecimal.ROUND_HALF_UP).multiply(decimal));
//        }

//        return target;
        return fact;
    }
}
